function countingSort(arr) {
  const max = Math.max(...arr)
  const min = Math.min(...arr)
  const range = max - min + 1//获取区间
  const countArr = new Array(range).fill(0)
  const output = new Array(arr.length)

  for(let i=0; i<arr.length; i++){ //每个元素对应好位置(计算偏移量)，在该位置计算元素的个数
  	countArr[arr[i]-min]++
  }
	// [ 1, 0, 2, 0, 0, 0, 3 ]
  for(let i= 1; i<range; i++){
  	countArr[i] += countArr[i - 1]
  }
	// [ 1, 1, 3, 3, 3, 3, 6 ]

  for(let i=0; i<arr.length;i++){
  // for(let i=arr.length -1; i>=0;i--){
  	output[countArr[arr[i]-min] - 1] = arr[i]
  	countArr[arr[i]-min]--
  }

	for(let i=0; i<arr.length; i++){
		arr[i] = output[i]
	}
  return arr
}

const arr = [7,7,7,1,3,3]

const res = countingSort(arr)
console.log(res,'🍉')